﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace INSTA.Samples.EF_01
{
    class Program
    {
        
        static void Main(string[] args)
        {
            //CreatePersonWithOrders();
            GetAllPersonsWithShortName();
        }


        public static void SaveSimpleObject()
        {
            using (var context = new TestDBEntities())
            {
                // On crée une instance de la classe
                // Personne, qui a été générée automatiquement
                // à partir de la BDD, via notre 
                // modèle "TestDbModel.edmx".
                var p = new Personne()
                {
                    Nom = "toto",
                    Prénom = "titi",
                    AnnéeNaissance = 1954,
                };

                context.Personne.Add(p);
                context.SaveChanges();  //--> persiste dans la BDD..


            }   // context.Dispose() appelé.
        }

        public static void CreatePersonWithOrders()
        {
            using (var context = new TestDBEntities())
            {
                // On crée une instance de la classe
                // Personne, qui a été générée automatiquement
                // à partir de la BDD, via notre 
                // modèle "TestDbModel.edmx".
                var p = new Personne()
                {
                    Nom = "Marley",
                    Prénom = "Bob",
                    AnnéeNaissance = 1954,
                    
                };


                context.Personne.Add(p);
                context.SaveChanges();  //--> persiste dans la BDD..

                p.Order.Add(new Order()
                                {
                                    DeliveryAddress = "Kingston"

                                });

                p.Order.Add(new Order()
                {
                    DeliveryAddress = "Paris"

                });

                
                

            }   // context.Dispose() appelé.
        }

        public static void GetAllPersonsWithShortName()
        {
            var context = new TestDBEntities();


                        (from person in context.Personne
                        where person.Nom.Length > 3
                        select new
                                   {
                                       FullName = person.Prénom + " " + person.Nom,
                                       YOB = person.AnnéeNaissance
                                   }).ToList().ForEach(x => Console.WriteLine(x.FullName + " " + x.YOB));
            
        }

    }
}
